package cn.ainit.sys.ds.store;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import cn.ainit.butn.proceduce.CommonProcedure;
import cn.ainit.common.ReturnObject;
import cn.ainit.sys.framework.entity.SysColumns;
import cn.ainit.sys.framework.save.ReceiveZM;
import cn.ainit.sys.query.datastore.DataStore;

public interface StoreDao {
	/**
	 * 根据DsId查询相关sql
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	public String findSql(String dsId) throws Exception;
	/**
	 * 根据DsId查询相关的实体类
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	public DataStore findStore(String dsId) throws Exception;
	/**
	 * 根据sql查询不确定的实体类的list
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	public Object findObjects(String sql) throws Exception;
	
	/**
	 *审核时的更新
	 * @throws Exception
	 * author:cff
	 * 2014/3/26 14:38
	 */
	public Integer checkObject(String sql) throws Exception;
	
	/**
	 *审核时根据主键得到对象的审核状态
	 * @throws Exception
	 * author:cff
	 * 2014/3/27 10:55
	 */
	public Integer getIsVerify(String hql)throws Exception;
	
	/***
	 * 作废时根据主键得到作废之前的状态
	 * @param hql
	 * @return
	 * @throws Exception
	 */
	public Integer getIsDestory(String hql) throws Exception;
	/**
	 * 根据dsId去commonProcedure中查找是否存在单独的存储过程
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-4-24 上午10:25:25
	 */
	CommonProcedure procedureByDsId(String dsId,String code) throws Exception;
	/**
	 * 执行sql语句
	 * @param sql
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-4-24 上午10:59:33
	 */
	boolean updDestory(String dsId,String manId,String whereStr,String aord) throws Exception;
	/**
	 * 执行存储过程的方法  （通用的  固定的参数）
	 * @param djId
	 * @param manId
	 * @param stationId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-4-24 下午02:01:27
	 */
	ReturnObject execProcedure(String djId,String dsId,String manId,String stationId,String proceName) throws Exception;
	
	/**
	 * 根据sql返回单个的String类型的字符
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	public String getStringBySql(String sql) throws Exception;
	/**
	 * 查找父节点的函数
	 * @param managerId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-5-26 下午06:23:24
	 */
	String execParentNode(String managerId) throws Exception;
	/**
	 * 执行sql返回sql中查询的所有列
	 * @param sqlText
	 * @return
	 * @throws Exception
	 * @author wyang
	 */
	List<String> callBackSql(String sqlText) throws Exception;
	/**
	 * 增加queryColumn
	 * @param queryCol
	 * @return
	 * @throws Exception
	 * @author wyang
	 */
	boolean saveQueryCol(List<String> colnList,String dsId) throws Exception;
	/**
	 * 根据sql 查询  返回list
	 * @param sql
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-20 下午05:31:07
	 */
	List execSql(String sql) throws Exception;
	/**
	 * 可视化界面的保存datagrid的方法
	 * @param receiveZMobj
	 * @param session
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-23 上午09:43:55
	 */
	ReturnObject saveConfig(Map<String,Object> receiveMobj)throws Exception;
}
